'''
用生成器来计算1!+2!+3!+4!......10!的和
'''
# 阶层
# 1! = 1
# 2! = 2*1
# 3! = 3*2*1
# 4! = 4*3*2*1
# 计数变量
# 1的阶层
# i = 1
# j = 1
def func(n):# n 的阶乘
    i = 1# 计数的变量 第一次  i  1
    j = 1# 1的阶乘 第一次  j  1
    while i <= n:# 计数为条件  增加到不满足时候跳出循环
        yield j# 生成器暂停函数并输出值 第一次  1
        i += 1# 计数自增1 第二次  i  2 第三次   i  3 第四次   i  4  第5 次  i 5
        j = j * i #  第二次  j  2 第三次  j  2 * 3 = 6 第四次   j   2 * 3 * 4    第5 次  2 * 3 * 4 * 5

a=func(10)
# print(a)
sum = 0
for j in a:
    # print(j)
    sum += j
print(sum)